P4 is a high-level language for programming protocol-independent packetprocessors. P4 works in conjunction with SDN control protocols like OpenFlow.In its current form, OpenFlow explicitly specifies protocol headers on which itoperates. This set has grown from 12 to 41 fields in a few years, increasingthe complexity of the specification while still not providing the flexibilityto add new headers. In this paper we propose P4 as a strawman proposal for howOpenFlow should evolve in the future. We have three goals: (1)Reconfigurability in the field: Programmers should be able to change the wayswitches process packets once they are deployed. (2) Protocol independence:Switches should not be tied to any specific network protocols. (3) Targetindependence: Programmers should be able to describe packet-processingfunctionality independently of the specifics of the underlying hardware. As anexample, we describe how to use P4 to configure a switch to add a newhierarchical label.
展开▼